package org.crazyit.activiti_d1._3_DeleteTask;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;

import java.util.ArrayList;

public class DeleteTask {

    public static void main(String[] args) {

        //1. 创建流程引擎
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

        //2.获取任务服务组件
        TaskService taskService = engine.getTaskService();

        //3. 保存若干个Task
        for (int i = 0; i < 10; i++) {
            saveTask(taskService, String.valueOf(i));
        }

        //4. 删除Task (不包括历史数据和子任务)
        taskService.deleteTask("1");

        //5. 删除Task (包括历史数据和子任务)
        taskService.deleteTask("2",true);

        //6. 删除多个Task (不包括历史数据和子任务)
        ArrayList<String> ids = new ArrayList<>();
        ids.add("3");
        ids.add("4");
        taskService.deleteTasks(ids);

        //7. 删除多个Task (包括历史数据和子任务)
        ids = new ArrayList<>();
        ids.add("5");
        ids.add("6");
        taskService.deleteTasks(ids, true);

        //8. 再删除ID 为3 的Task, 此时任务3 的历史数据也会被删除
        taskService.deleteTask("3", true);

    }

    /**
     * 保存一个Task
     * @param taskService
     * @param id
     */
    private static void saveTask(TaskService taskService, String id) {

        Task task = taskService.newTask(id);
        taskService.saveTask(task);

    }

}
